/*
 * @Author: wangjing wangjin122@qq.com
 * @Date: 2024-02-22 10:14:17
 * @LastEditors: wangjing wangjin122@qq.com
 * @LastEditTime: 2024-02-22 15:08:43
 * @FilePath: \抽象类\index.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
/**
 * 抽象类（基类）
 *    abstract 所定义的类
 *    abstract 所定义的方法 都只能描述 不能进行实现
*/

// 抽象类不能被实例化
abstract class Vue {
  name: string
  constructor(name: string) {
    this.name = name
  }
  getName(): string {
    return this.name
  }
  abstract init(name: string): void
}

// 派生类继承抽象类的使用 可以实例化
class React extends Vue {
  constructor() {
    super('')
  }
  // 抽象类可以在派生类中进行实现
  init(name: string) {
    this.name = name
  }
  setName(name: string) {
    this.name = name
  }
}

const react = new React()
react.setName('名字')
console.log(react.getName())